describe('时间控制', () => {
  before(()=>{
    cy.exec('node main.js',{ failOnNonZeroExit: false })
  })
  beforeEach(()=>{
    // 控制器生效需要在页面加载前执行
    cy.clock();
    cy.visit('http://localhost:3000/demo-time.html');
  })

  it('时间控制',()=>{
    // TODO:时间控制
    // 设置系统时间需要在加载完页面后执行
    cy.clock().then((clock)=>{
      clock.setSystemTime(new Date(2002, 3, 14)); 
    })
    cy.tick(5000)
    cy.get('#seconds-elapsed').should('have.text', '5 seconds')
    cy.tick(10000)
    cy.get('#seconds-elapsed').should('have.text', '15 seconds')
    // 恢复时间函数的控制 (覆盖的本机函数,在测试与测试之间使用,在测试内调用也无法重置当前例子中系统时间的控制)
    cy.clock().then((clock) => {
      clock.restore()
    })
  })
})
